#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include "IO_mem_test.h"

int main()
{
	int IO_memtest;
	int code;
	unsigned int current_status;
	char input=0 ;

	
	if ((IO_memtest = open("/dev/IO_mem",O_RDONLY ))<0) 
		{printf("open IO_mem error!\n"); 
		exit(1);
		}

	if ( lseek(IO_memtest,0,SEEK_SET) == -1) printf("IO_mem: the module can not lseek!\n");

	for ( ; input != 'q' ; getchar()) 	{
		
		printf("please input the command :");
		input= getchar();
		switch(input) {

	case '0':
		if ((code=ioctl( IO_memtest , IO_MEM_0  , NULL ) ) < 0) printf("IO_mem: ioctl IO_MEM_0 error! code=%d \n",code);
		else   printf("IO_mem: ioctl 0 ok!  \n");
		break;
	case '1':
		if ((code=ioctl( IO_memtest , IO_MEM_1  , NULL ) ) < 0) printf("IO_mem: ioctl IO_MEM_1 error! code=%d \n",code);
		else   printf("IO_mem: ioctl 1 ok!  \n");
		break;
	case '2':
		if ((code=ioctl( IO_memtest , IO_MEM_2  , NULL ) ) < 0) printf("IO_mem: ioctl IO_MEM_2 error! code=%d \n",code);
		else   printf("IO_mem: ioctl 2 ok!  \n");
		break;
	case '3':
		if ((code=ioctl( IO_memtest , IO_MEM_3  , NULL ) ) < 0) printf("IO_mem: ioctl IO_MEM_3 error! code=%d \n",code);
		else   printf("IO_mem: ioctl 3 ok! \n");
		break;

	 case '8':
		if ((code=ioctl( IO_memtest ,IO_MEM_STATUS , &current_status ) ) < 0) printf("IO_mem: ioctl IO_MEM_STATUS error! code=%d \n",code);
		else   printf("IO_mem: ioctl STATUS ok! current_status=0X%x\n",current_status);
		
		break;

	case 'q':
		break;

	 default:  /* redundant, as cmd was checked against MAXNR */
		printf("IO_mem:  Invalid input ! only 0,1,2,3,8,q !\n");
	}
}	
	close(IO_memtest);
 
 exit(0);
}
